// Package main 提供了一个使用 Gin 框架和统一响应工具的 Web 服务器示例
// 演示如何使用封装好的响应工具函数返回标准化的JSON响应
package main

// 导入必要的包
import (
	"gin-learn/response/res" // 导入自定义的响应工具包

	"github.com/gin-gonic/gin" // 导入 Gin Web 框架
)

// RunServer 初始化 Gin 路由器，注册路由处理函数，启动 Web 服务器
// 该函数演示了如何使用封装好的响应工具函数返回标准化的JSON响应
func RunServer() {
	// 创建默认的 Gin 路由器实例
	// 包含 Logger 和 Recovery 中间件
	// Logger 中间件用于记录请求日志
	// Recovery 中间件用于从 panic 中恢复并返回 500 错误
	r := gin.Default()

	// 注册路由：GET 请求 "/index" 路径映射到匿名处理函数
	// 当用户访问 http://localhost:8000/index 时，返回成功消息
	r.GET("/index", func(c *gin.Context) {
		// 使用自定义的响应工具函数返回成功消息
		// 注释掉的代码是直接使用 Gin 框架的 JSON 方法返回响应
		// c.JSON(200, gin.H{"code": 0, "msg": "ok", "data": gin.H{}})
		res.OKWithMsg(c, "请求成功")
	})

	// 注册路由：GET 请求 "/" 路径映射到匿名处理函数
	// 当用户访问 http://localhost:8000/ 时，返回成功消息
	r.GET("/", func(c *gin.Context) {
		// 使用自定义的响应工具函数返回成功消息
		// 注释掉的代码是直接使用 Gin 框架的 JSON 方法返回响应
		// c.JSON(200, gin.H{"code": 0, "msg": "ok", "data": gin.H{}})
		res.OKWithMsg(c, "请求成功")
	})

	// 启动 HTTP 服务器，监听 8000 端口
	// 等价于 r.Run("0.0.0.0:8000")，绑定到所有网络接口
	// 如果启动失败，会返回一个 error 类型的错误信息
	if err := r.Run(":8000"); err != nil {
		// 使用 panic 输出启动失败的错误信息
		panic(err)
	}
}
